package com.huangd.platform.common.utils;

import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

/**
 * @author : huangda
 * @date :2020/8/10 15:30
 * platform2
 * com.wing.platform
 */
public class MailUtils {
	//邮件服务器主机地址
	private static String HOST = "smtp.gmail.com";
	//帐号
	private static String ACCOUNT = "3pattiplay@gmail.com";
	//密码
	private static String PASSWORD = "mkhoythsmsuvpagy";

	/**
	 * @param toUser   发送邮件给谁
	 * @param title    邮件的标题
	 * @param emailMsg 邮件信息
	 */
	public static void sendMail(String toUser, String title, String emailMsg) throws AddressException, MessagingException {
		// 1.创建一个程序与邮件服务器会话对象 Session
		Properties props = new Properties();
		//设置发送的协议
		props.setProperty("mail.transport.protocol", "SMTP");

		//设置发送邮件的服务器
		props.setProperty("mail.smtp.host", HOST);
		props.setProperty("mail.smtp.auth", "true");// 指定验证为true
		props.setProperty("mail.smtp.port", "465");//设置端口
		props.setProperty("mail.smtp.socketFactory.port", "465");//设置ssl端口
		props.setProperty("mail.smtp.socketFactory.fallback", "false");
		props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

		// 创建验证器
		Authenticator auth = new Authenticator() {
			public PasswordAuthentication getPasswordAuthentication() {
				//设置发送人的帐号和密码      帐号          授权码
				return new PasswordAuthentication(ACCOUNT, PASSWORD);
			}
		};
		//会话
		Session session = Session.getInstance(props, auth);

		// 2.创建一个Message，它相当于是邮件内容
		Message message = new MimeMessage(session);

		//设置发送者
		message.setFrom(new InternetAddress(ACCOUNT));

		//设置发送方式与接收者
		List list = new ArrayList();//不能使用string类型的类型，这样只能发送一个收件人
		String[] median = toUser.split(",");//对输入的多个邮件进行逗号分割
		for (int i = 0; i < median.length; i++) {
			list.add(new InternetAddress(median[i]));
		}
		InternetAddress[] address = (InternetAddress[]) list.toArray(new InternetAddress[list.size()]);

		message.setRecipients(Message.RecipientType.TO, address);//当邮件有多个收件人时，用逗号隔开

		// 发给一个人
		//message.setRecipient(RecipientType.TO, new InternetAddress(toUser));

		//设置邮件主题
		message.setSubject(title);
		// message.setText("这是一封激活邮件，请<a href='#'>点击</a>");

		//设置邮件内容
		message.setContent(emailMsg, "text/html;charset=utf-8");

		// 3.创建 Transport用于将邮件发送
		Transport.send(message);
	}


	public static void main(String[] args) throws AddressException, MessagingException {
		MailUtils.sendMail("huangd@playjoygame.com", "邮件", "2020年7月24日08:15，菲律宾产品当前在线人数X，已低于前3天的平均值Y的90%，注意排查是否出现问题。");
	}
}
